package com.simon.cdc.utils;

import java.util.Arrays;
import java.util.List;
import java.util.Optional;

public class ParameterParseUtil {
    /**
     * 从参数中解析 --jobConfig=<path> 值
     * 此方法用于处理命令行参数，找出配置文件路径
     * 它通过过滤以 "--jobConfig=" 开头的参数，并返回其后的路径值
     * 如果没有找到合适的参数或参数为空，则返回 Optional.empty()
     *
     * @param args 命令行参数数组
     * @return 包含配置文件路径的Optional对象，如果没有找到则为Optional.empty()
     */
    public static Optional<String> parseArgs(String[] args, String parameterType) {
        // 检查传入的参数是否为空或长度为0，如果是，则直接返回空的Optional对象
        if (args == null || args.length == 0) {
            return Optional.empty();
        }
        // 使用流处理命令行参数，过滤出以 "--jobConfig=" 开头的参数
        return Arrays.stream(args)
                .filter(arg -> arg != null && arg.startsWith(parameterType))
                // 移除参数中的 "--jobConfig=" 前缀，获取配置路径
                .map(arg -> arg.substring(parameterType.length()))
                // 过滤掉空的路径值
                .filter(path -> !path.isEmpty())
                // 返回第一个匹配的配置路径，如果没有找到则返回空的Optional对象
                .findFirst();
    }


}
